<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
    <script>

        //1. let对比var来说,.块作用域!! (类似: 局部变量)
        // {
        //     var name = "hehe";
        //     let age = 19;
        // }
        // console.log(name);
        //Uncaught ReferenceError: age is not defined
        // console.log(age);

        //2.let不能重复声明
        // var name1 = "aaa";
        // console.log(name1);
        // var name1 = "hehe";
        // console.log(name1);
        // let name2 = "lala";
        // console.log(name2);
        //let name2 = "buxixi";
        //console.log(name2);

        //3.let碰见循环和延迟定时任务
        // var特别容易被 [[污染]] 
         //js单线程模型,如果循环包裹了定时任务,定时任务会在遍历结束后执行!
        // for (var i = 0; i < 10; i++) {
        //   setTimeout(function(){
        //       console.log(i); //0-9
        //   })
        // } 
        // // 输出十个 10
        // for (let j = 0; j < 10; j++) {
        //   setTimeout(function(){
        //      console.log(j);
        //   })
        // }
        //0 - 9 
        //4. 变量提升的问题 [var变量提升能力,可以先使用,再声明! ]
        console.log(aa); //有aa变量,没有声明值  undefined 
        var aa = "xx";
        console.log(bb); //let先声明再使用
        let bb = "jiejie";

        //undefined [声明变量没赋值  let var name ; 母胎单身 ]  null [主动赋值 = null 曾经拥有]   有什么区别? 
        

    </script>
</body>
</html>